﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace HHCommon
{
    public class GetDirectoryFiles : System.Web.UI.Page
    {
        public StringBuilder TreeStr = new StringBuilder();

        #region //获取指定目录下的.aspx页面(一级)
        /// <summary>
        ///  获取指定目录下的.aspx页面
        /// </summary>
        /// <param name="Path">目录路径</param>
        /// <returns></returns>
        public string GetPages(string Path)
        {
            GetFiles(Server.MapPath(Path));
            return TreeStr.ToString();
        }
        /// <summary>
        /// 获取指定目录下的.aspx页面(一级)
        /// </summary>
        /// <param name="path">目录路径</param>
        private void GetFiles(string path)
        {
            //获取指定目录下的所有文件名称
            string[] files = Directory.GetFiles(path);
            foreach (string file in files)
            {
                string filename = file;
                //如果文件以“aspx”结尾则加载到节点中否则不加载
                if (file.EndsWith("aspx"))
                {
                    TreeStr.Append("<option value=\"" + Path.GetFileName(file) + "\">" + Path.GetFileName(file) + "</option>");
                }
            }
        }
        #endregion

        #region  //获取指定目录下的.aspx页面(无限级)
        /// <summary>
        /// 获取指定目录下的.aspx页面(无限级)
        /// </summary>
        /// <param name="Path">指定路径</param>
        /// <returns></returns>
        public string GetInfinitePages(string Path)
        {
            GetInfiniteFiles(Server.MapPath(Path));
            return TreeStr.ToString();
        }
        /// <summary>
        /// 获取指定目录下的.aspx页面(无限级)
        /// </summary>
        /// <param name="path">指定路径</param>
        /// <returns></returns>
        private void GetInfiniteFiles(string path)
        {
            //获取指定目录下的文件
            string[] files = Directory.GetFiles(path);
            //获取指定目录下的所有文件夹
            string[] filers = Directory.GetDirectories(path);
            //将获取到的文件夹加载到节点中
            foreach (string filer in filers)
            {
                //获取目录下的目录信息（形成递归）
                TreeStr.Append(Path.GetFileName(filer));
                GetInfiniteFiles(filer);
            }
            //将页面加载到节点中
            foreach (string file in files)
            {
                //如果文件以“aspx”结尾则加载到节点中否则不加载
                if (file.EndsWith("aspx"))
                {
                    //string pagevalue = file.Substring(file.IndexOf("AdminsystemInfo"));
                    TreeStr.Append(Path.GetFileName(file));
                }
            }
        }
        #endregion
    }
}
